//3164. 优质数对的总数 I
class Solution {
public:
    long long numberOfPairs(vector<int>& nums1, vector<int>& nums2, int k) {
        unordered_map<int,int> data;
        for(auto& e:nums2)
        {
            data[e]++;
        }
        long long res=0;
        for(auto& e:nums1)
        {
            if(e%k==0)
            {
                long long tem=e/k;
                int flag=tem%2;
                for(int i=1;i<=sqrt(tem);i++)
                {
                    if(tem%i==0)
                    {
                        if(data[i])
                            res+=data[i];
                        if(i*i!=tem&&data[tem/i])
                            res+=data[tem/i];
                        //i+=flag;
                    }
                    
                }
            }
        }
        return res;
    }
};

//3164. 优质数对的总数 II
class Solution {
public:
    int numberOfPairs(vector<int>& nums1, vector<int>& nums2, int k) {
        unordered_map<int,int> data;
        for(auto& e:nums2)
        {
            data[e]++;
        }
        int res=0;
        for(auto& e:nums1)
        {
            if(e%k==0)
            {
                int tem=e/k;
                int flag=tem%2;
                for(int i=1;i<=sqrt(tem);i++)
                {
                    if(tem%i==0)
                    {
                        if(data[i])
                            res+=data[i];
                        if(i*i!=tem&&data[tem/i])
                            res+=data[tem/i];
                        i+=flag;
                    }
                    
                }
            }
        }
        return res;
    }
};